package Thread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class Demo40 {
    public static void main(String[] args) throws InterruptedException, ExecutionException {

        //1.count操作
        Callable<Integer> callable = new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                int result = 0;
                for(int i = 1 ; i <= 1000 ; i++){
                    result  += i;
                }
                return result;
            }
        };

        //2.获取结果

        //创建线程, 把 callable 搭载到线程内部执行
        FutureTask<Integer> futureTask = new FutureTask<>(callable);
        Thread t = new Thread(futureTask);
        t.start();
        t.join();

        //通过调用包装类futureTask获取Callable里面call方法的返回结果
        System.out.println(futureTask.get());
        
    }
}
